package main

import (
	"log"
	"os"
)

func main() {
	opt := parseOpt()
	cfg, err := readConf()
	if err != nil {
		log.Fatal(err)
	}

	switch opt.cmd {
	case "add":
		if err := add(cfg, opt); err != nil {
			log.Fatal(err)
		}
	case "edit":
	case "cat":
	case "ls":
	case "rm":
	case "serve":
		if err := serve(cfg); err != nil {
			log.Fatal(err)
		}
	case "help":
		help()           // in options.go
	}
}


func add(cfg *Config, opt *Options) error {
	// open DB
	db, err := initDB(cfg)
	if err != nil {
		return err
	}

	// edit file
	file := opt.file
	if file == "" {
		file, err = editNewFile(cfg)
		defer os.Remove(file)
		if err != nil {
			return err
		}
	}

	// add to database
	recipe, err := db.add(file)
	if err != nil {
		return err
	}

	// download resources
	if cfg.downloadResources {
		downloadResources(cfg, recipe)
	}

	return nil
}
